package 操作文件内容;


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileDemo2 {
    //一次读取 1024 个字节
    public static void main(String[] args) {
        try( InputStream inputStream=new FileInputStream("./hello.txt") ) {

            byte[] buffer=new byte[1024];//将每次读取操作的结果放入 buffer数组中
            while (true) {
                int lens=inputStream.read(buffer);//read 返回本次读取的字节长度
                if (lens ==-1) {
                    break;
                }

                //打印中文时，不能按照字节打印，而是要将三个字节合并作为一个整体(String)进行打印
//                for (int i = 0; i <lens; i++) {
//                    System.out.printf("%c",buffer[i]);
//                    //%c 按照ASCII表中的进行打印，当出现UTF-8或GBK时，不是合法的ASCII值就会出现异常，一个汉字在UTF-8中通过三个字节构成
//                }
                for (int i = 0; i <lens; i+=3) {
                    String s=new String(buffer,i,3,"UTF-8");//从下标i开始，长度为3
                    System.out.print(s);
                    //这种写法不好，不能处理汉字+英文
                    //其实在Java标准库对于字符集有内置的解决方案，不需要自己实现
                }
            }

        }catch (IOException e){
            e.printStackTrace();
        }

    }
}
